
using System;
using System.Text;
using LastFMGenNHibernate.CEN;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Criterion;
using NHibernate.Exceptions;
using LastFMGenNHibernate.EN.LastFM;

namespace LastFMGenNHibernate.CAD.LastFM
{
        public partial class UsuarioRegistradoCAD : BasicCAD, IUsuarioRegistradoCAD
        {
        public UsuarioRegistradoCAD() : base ()
        {
        }

        public UsuarioRegistradoCAD(ISession sessionAux) : base (sessionAux)
        {
        }



        public UsuarioRegistradoEN ReadOIDDefault (int id)
        {
                UsuarioRegistradoEN usuarioRegistradoEN = null;

                try
                {
                        SesssionInitializeTransaction ();
                        usuarioRegistradoEN = (UsuarioRegistradoEN)session.Load (typeof(UsuarioRegistradoEN),
                                id

                                );
                        SessionCommit ();
                }

                catch (Exception ex) {
                        SessionRollBack ();
                        if (ex is ModelException)
                                throw ex;
                        throw new DataLayerException ("Error in UsuarioRegistradoCAD.", ex);
                }


                finally
                {
                        SessionClose ();
                }

                return usuarioRegistradoEN;
        }


        public int New_ (UsuarioRegistradoEN usuarioRegistrado)
        {
                try
                {
                        SesssionInitializeTransaction ();

                        session.Save (usuarioRegistrado);
                        SessionCommit ();
                }

                catch (Exception ex) {
                        SessionRollBack ();
                        if (ex is ModelException)
                                throw ex;
                        throw new DataLayerException ("Error in UsuarioRegistradoCAD.", ex);
                }


                finally
                {
                        SessionClose ();
                }

                return usuarioRegistrado.Id;
        }

        public void ModificarPerfil (UsuarioRegistradoEN usuarioRegistrado)
        {
                try
                {
                        SesssionInitializeTransaction ();
                        UsuarioRegistradoEN usuarioRegistradoEN = (UsuarioRegistradoEN)session.Load (typeof(UsuarioRegistradoEN), usuarioRegistrado.Id);

                        usuarioRegistradoEN.Nombre = usuarioRegistrado.Nombre;


                        usuarioRegistradoEN.Correo = usuarioRegistrado.Correo;


                        usuarioRegistradoEN.Suscrito = usuarioRegistrado.Suscrito;


                        usuarioRegistradoEN.Fecha = usuarioRegistrado.Fecha;


                        usuarioRegistradoEN.TiempoEscuchado = usuarioRegistrado.TiempoEscuchado;


                        usuarioRegistradoEN.SesionIniciada = usuarioRegistrado.SesionIniciada;

                        session.Update (usuarioRegistradoEN);
                        SessionCommit ();
                }

                catch (Exception ex) {
                        SessionRollBack ();
                        if (ex is ModelException)
                                throw ex;
                        throw new DataLayerException ("Error in UsuarioRegistradoCAD.", ex);
                }


                finally
                {
                        SessionClose ();
                }
        }
        public void DarseDeBaja (int id)
        {
                try
                {
                        SesssionInitializeTransaction ();
                        UsuarioRegistradoEN usuarioRegistradoEN = (UsuarioRegistradoEN)session.Load (typeof(UsuarioRegistradoEN),
                                id

                                );
                        session.Delete (usuarioRegistradoEN);
                        SessionCommit ();
                }

                catch (Exception ex) {
                        SessionRollBack ();
                        if (ex is ModelException)
                                throw ex;
                        throw new DataLayerException ("Error in UsuarioRegistradoCAD.", ex);
                }


                finally
                {
                        SessionClose ();
                }
        }

        public void BorrarAmigo (int id)
        {
                try
                {
                        SesssionInitializeTransaction ();
                        UsuarioRegistradoEN usuarioRegistradoEN = (UsuarioRegistradoEN)session.Load (typeof(UsuarioRegistradoEN),
                                id

                                );
                        session.Delete (usuarioRegistradoEN);
                        SessionCommit ();
                }

                catch (Exception ex) {
                        SessionRollBack ();
                        if (ex is ModelException)
                                throw ex;
                        throw new DataLayerException ("Error in UsuarioRegistradoCAD.", ex);
                }


                finally
                {
                        SessionClose ();
                }
        }

        public void Destroy (int id)
        {
                try
                {
                        SesssionInitializeTransaction ();
                        UsuarioRegistradoEN usuarioRegistradoEN = (UsuarioRegistradoEN)session.Load (typeof(UsuarioRegistradoEN),
                                id

                                );
                        session.Delete (usuarioRegistradoEN);
                        SessionCommit ();
                }

                catch (Exception ex) {
                        SessionRollBack ();
                        if (ex is ModelException)
                                throw ex;
                        throw new DataLayerException ("Error in UsuarioRegistradoCAD.", ex);
                }


                finally
                {
                        SessionClose ();
                }
        }

        public void Modify (UsuarioRegistradoEN usuarioRegistrado)
        {
                try
                {
                        SesssionInitializeTransaction ();
                        UsuarioRegistradoEN usuarioRegistradoEN = (UsuarioRegistradoEN)session.Load (typeof(UsuarioRegistradoEN), usuarioRegistrado.Id);

                        usuarioRegistradoEN.Nombre = usuarioRegistrado.Nombre;


                        usuarioRegistradoEN.Correo = usuarioRegistrado.Correo;


                        usuarioRegistradoEN.Suscrito = usuarioRegistrado.Suscrito;


                        usuarioRegistradoEN.Fecha = usuarioRegistrado.Fecha;


                        usuarioRegistradoEN.TiempoEscuchado = usuarioRegistrado.TiempoEscuchado;


                        usuarioRegistradoEN.SesionIniciada = usuarioRegistrado.SesionIniciada;

                        session.Update (usuarioRegistradoEN);
                        SessionCommit ();
                }

                catch (Exception ex) {
                        SessionRollBack ();
                        if (ex is ModelException)
                                throw ex;
                        throw new DataLayerException ("Error in UsuarioRegistradoCAD.", ex);
                }


                finally
                {
                        SessionClose ();
                }
        }
        public System.Collections.Generic.IList<UsuarioRegistradoEN> DevolverUsuarios (int first, int size)
        {
                System.Collections.Generic.IList<UsuarioRegistradoEN> result = null;
                try
                {
                        SesssionInitializeTransaction ();
                        if (size > 0)
                                result = session.CreateCriteria (typeof(UsuarioRegistradoEN)).
                                         SetFirstResult (first).SetMaxResults (size).List<UsuarioRegistradoEN>();
                        else
                                result = session.CreateCriteria (typeof(UsuarioRegistradoEN)).List<UsuarioRegistradoEN>();
                        SessionCommit ();
                }

                catch (Exception ex) {
                        SessionRollBack ();
                        if (ex is ModelException)
                                throw ex;
                        throw new DataLayerException ("Error in UsuarioRegistradoCAD.", ex);
                }


                finally
                {
                        SessionClose ();
                }

                return result;
        }
        }
}
